package com.means.polymerize.assembly.aspect.page;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.means.polymerize.common.constants.Global;
import com.means.polymerize.common.util.ServletUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

/**
 * 分页数据
 *
 * @author ruoyi
 */
@Data
@Builder
@AllArgsConstructor
public class PageDomain {
    /**
     * 当前记录起始索引
     */
    private Integer pageNum;

    /**
     * 每页显示记录数
     */
    private Integer pageSize;

    /**
     * 排序列
     */
    private String orderByColumn;

    /**
     * 排序方式：
     * <br/>
     * 默认：asc
     * <br/>
     * 可选：desc
     */
    private String orderByMode;

    /**
     * Gets page num.
     *
     * @param name the name
     * @return the page num
     */
    public static Integer getPageNum(String name) {
        final String parameter = ServletUtils.getRequest().getParameter(name);
        if (StringUtils.isBlank(parameter)) {
            return Global.NUM_I_1;
        }
        return Integer.valueOf(parameter);
    }

    /**
     * Gets page size.
     *
     * @param name the name
     * @return the page size
     */
    public static Integer getPageSize(String name) {
        final String parameter = ServletUtils.getRequest().getParameter(name);
        if (StringUtils.isBlank(parameter)) {
            return Global.NUM_I_10;
        }
        return Integer.valueOf(parameter);
    }

    /**
     * Gets order by.
     *
     * @return the order by
     */
    public String getOrderBy() {
        if (StringUtils.isBlank(orderByColumn)) {
            return Global.NOT;
        }
        return "%s %s".formatted(StrUtil.toUnderlineCase(orderByColumn), orderByMode);
    }
}
